对于UI的基础内容的学习,包括弹出对话框的创建与自建控件布局的练习
AlertDialog
效果:
AlertDialog可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够
屏蔽掉其他控件的交互能力,因此AlertDialog一般都是用于提示一些非常重要的内容或者警告信
息。比如为了防止用户误删重要内容,在删除前弹出一个确认对话框。修改MainActivity中的代码,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public void onClick(View v) { switch (v.getId()){ case R.id.button: AlertDialog.Builder dialog = new AlertDialog.Builder (MainActivity. this); dialog.setTitle("This is Dialog"); dialog.setMessage("Something important."); dialog.setCancelable(false); dialog.setPositiveButton("OK", new DialogInterface. OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.setNegativeButton("Cancel", new DialogInterface. OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.show(); break; default: break; } }
|
ProgressDialog
效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public void onClick(View v) { switch (v.getId()){ case R.id.button: ProgressDialog progressDialog = new ProgressDialog (MainActivity.this); progressDialog.setTitle("This is ProgressDialog"); progressDialog.setMessage("Loading..."); progressDialog.setCancelable(true); progressDialog.show(); break; default: break; } }
|
当数据加载完成后必须要调用ProgressDialog的
dismiss() 方法来关闭对话框
LinearLayout线性布局
1 2 3 4 5 6 7 8
| android:orientation="horizontal" android:orientation="vertical"
android:layout_gravity="top" android:layout_gravity="center_vertical" android:layout_gravity="bottom"
android:layout_weight="1"
|
RelativeLayout相对布局
1 2 3 4 5
| android:layout_centerInParent="true" android:layout_alignParentLeft="true"
android:layout_above="@id/button3" android:layout_toLeftOf="@id/button3"
|
创建自定义控件
自定义布局
以标题栏为例
使用LinearLayout布局创建title
创建titleLayout.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); Button titleBack = findViewById(R.id.title_back); Button titleEdit = findViewById(R.id.title_edit); titleBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((Activity) getContext()).finish(); } }); titleEdit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), "你点击了编辑按钮", Toast.LENGTH_SHORT).show(); } }); }
|
在其它布局里面引入自定义控件
1 2 3 4
| <cn.hozoy.UICustomViews.TitleLayout android:layout_width="match_parent" android:layout_height="wrap_content"> </cn.hozoy.UICustomViews.TitleLayout>
|
改变styles文件,使系统任务栏透明
1 2 3 4
| <item name="android:windowTranslucentStatus">false</item> <item name="android:windowTranslucentNavigation">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
|
效果: